<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>es5组合式继承</title>
    <script>
    //es5 组合式继承
    //父类
    function User(name, pass){
      this.name=name;
      this.pass=pass;
    }

    User.prototype.showName=function (){
      console.log(this.name);
    };
    User.prototype.showPass=function (){
      console.log(this.pass);
    };

    //子类
    function VipUser(name, pass, level){
	  	//  this.name=name;
      // this.pass=pass;
      User.call(this, name, pass);  //构造函数里call-继承属性
      this.level=level;
    }
    
    //1.方法1 原型链继承,继承的是方法:  子类.原型=new  父类方法()
    VipUser.prototype=new User(); //原型继承-继承方法
    // VipUser.prototype.constructor=VipUser;  //构造函数上最好在指向下

    VipUser.prototype.showLevel=function (){
      console.log(this.level);
    }

    //2.方法2 直接赋值方法-遍历父类所有原型方法赋值给子类原型方法
    // for(var i in User.prototype){
    //   // console.log('父类原型方法',User.prototype);
    //   VipUser.prototype[i]=User.prototype[i]
    // }

    
    var v1=new VipUser('blue', '123456', 3);

    v1.showName();
    v1.showPass();
    v1.showLevel();
    </script>
  </head>
  <body>

  </body>
</html>
